package com.lordtan.commom.utils;

import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;

/**
 * 用来进行加密处理
 * @author lordtan
 * @date 2012-12-12
 */
public class SecretTool {

	/**
	 * HMAC-SHA1签名，不可逆的，用来做服务器验证
	 * 数字签名之后再转成base64
	 * 真可谓双重保险
	 * @param data 被签名的数据
	 * @param key 签名的秘钥，这个要保密哟
	 * @return
	 */
	public static String hmacsha1(String data, String key) {
		byte[] byteHMAC = null;
		try {
			Mac mac = Mac.getInstance("HmacSHA1");
			SecretKeySpec spec = new SecretKeySpec(key.getBytes(), "HmacSHA1");
			mac.init(spec);
			byteHMAC = mac.doFinal(data.getBytes());
		} catch (InvalidKeyException e) {
			e.printStackTrace();
		} catch (NoSuchAlgorithmException ignore) {
		}
		String secret = Base64.encode(byteHMAC);
		return secret;
	}
    
	/**
	 * 校验注册码是否正确
	 * @param email 电子邮件
	 * @param company 公司
	 * @param regcode 注册码
	 * @return
	 */
	public static boolean isRightRegCode(String email,String company,String regcode){
		String ip = IpUtils.getIp();
		String mac = IpUtils.getMAC();
		String data = email+"|"+company+"|"+mac+"|"+ip;
		if(hmacsha1(data,"lordtan").equals(regcode)){
			return true;
		}
		return false;
	}
	
}
